package com.xsh136.quickgame;

import java.util.Scanner;

/**
 * Created by Administrator on 2017/3/28 0028.
 */
public class QuickGame {
    private static Scanner input=new Scanner(System.in);//静态变量
    //定义一个全局变量
    private String[] chars;
    private Player player;
    public Level[] levels=new Level[6];
    /**
     * 游戏启动方法
     */
    public void start() {
        System.out.println("正在启动快打游戏。");
        init();//init初始化
    }

    /**
     * 开始游戏
     */
    public void run(){
        int count=1;
        while(true){
            //根据用户随机输出字符
            String s=print();
            System.out.println(s);
            long start=System.currentTimeMillis();//获得正在运行这行代码的毫秒数
            String s2=input.nextLine();
            long end=System.currentTimeMillis();
            long cha=end-start;
            int miao=(int)(cha/1000);
            if (miao>player.level.timeout){
                System.out.println("遗憾，你输入超时程序退出");
                break;
            }else{
                if (!s2.equals(s)){
                    System.out.println("遗憾，你输入错误程序退出");
                    break;
                }
            }
            player.score+=player.level.score;
            if (count==player.level.times){
                if (player.level.no==6){
                    System.out.println("通关");
                    break;
                }
                System.out.println("恭喜正确，得分"+player.level.score+"分，累计得分"+player.score+"分，当前等级"+(player.level.no+1)+"级");
                player.level=levels[player.level.no];
                count=1;
            }else {
                System.out.println("恭喜正确，得分" + player.level.score + "分，累计得分" + player.score + "分，当前等级" + player.level.no + "级");
                count++;
            }
        }
    }

    /**
     * 根据用户等级随机输出字符
     * @return
     */
    private String print() {
        String s="";
        for (int i=0;i<player.level.charCount;i++){
            int index=(int)(Math.random()*chars.length);
            s+=chars[index];
        }
        return s;
    }

    /**
     * 初始化快打字符
     */
    public void initChars(){

    System.out.println("请输入1或2,1表示 默认字符为0,2表示玩家自定义字符");
    String answer=input.nextLine();
    switch (answer){
        case "1":
            chars=new String[]{"0"};
            break;
        case "2":
            System.out.println("请输入你想要的字符个数");
            //引用整数包装类Integer
            int n=Integer.parseInt(input.nextLine());
            chars=new String[n];
            for (int i=0;i<0;i++){
                System.out.println("请输入第"+(i+1)+"个");
                chars[i]=input.nextLine();
            }
            break;
        default:
            System.out.println("你输入错误，请正确输入！");
            return;
    }
}

    /**
     * 初始化等级
     */
    public void initLevels(){
        //第一级
        levels[0]=new Level();
        levels[0].no=1;
        levels[0].charCount=2;
        levels[0].timeout=3;
        levels[0].score=1;
        levels[0].times=2;
        //第二级
        levels[1]=new Level();
        levels[1].no=2;
        levels[1].charCount=3;
        levels[1].timeout=4;
        levels[1].score=2;
        levels[1].times=2;
        //第三级
        levels[2]=new Level();
        levels[2].no=3;
        levels[2].charCount=4;
        levels[2].timeout=6;
        levels[2].score=3;
        levels[2].times=2;
        //第四级
        levels[3]=new Level();
        levels[3].no=4;
        levels[3].charCount=4;
        levels[3].timeout=5;
        levels[3].score=4;
        levels[3].times=2;
        //第五级
        levels[4]=new Level();
        levels[4].no=5;
        levels[4].charCount=5;
        levels[4].timeout=7;
        levels[4].score=5;
        levels[4].times=2;
        //第六级
        levels[5]=new Level();
        levels[5].no=6;
        levels[5].charCount=5;
        levels[5].timeout=5;
        levels[5].score=6;
        levels[5].times=2;
}
    /**
     * 初始化玩家
     */
    public void initPlayer(){
        player=new Player();
        player.level=levels[0];
}
    /**
     * 游戏初始化方法
     */
    private void init() {
        //初始化快打字符
        initChars();
        //初始化等级
        initLevels();
        //初始化玩家
        initPlayer();
        //开始游戏
        run();
    }
}